package com.cn.wanxi.util;

import java.io.*;
import java.nio.charset.StandardCharsets;

public class MyfileTwo {
    /**
     * 最终目的就是为了写数据
     * 一个方法里面不能写太多代码，
     * 而且代码必须清晰
     * 每个方法都要写注释
     *
     * @param args
     */
    public static void main(String[] args) {
//        String path = "";
//        File file = new File(path);
//        boolean exists = file.exists();
//        if (exists) {
//            boolean directory = file.isDirectory();
//
//        }
//        有三个方法
//        所以需要写三个方法进行调用

        new MyfileTwo().writeData();

    }

    /**
     * 只是用于调用方法
     * 1.给定路径创建文件夹
     * 2.根据路径和文件名创建文件
     * 3.根据数据和文件路径写入数据
     * --------------------------
     * 第二阶段：面向对象：提取数据
     * 对象提取应该按照最小原则，不可再次拆分原则
     */
    private void writeData() {
//        创建文件，需要路径和文件名称
        String path = "E:\\wanxi\\step-3\\canyin03-0705\\myWeb\\a\\a\\b";
        String fileName = "test.txt";
//        Java命名一定要见名知意
        File directory = createDirectory(path);
        File file = createFile(directory, fileName);
        String data = "中华人民共和国";
        writeNote(file, data);
    }

    /**
     * 写入数据
     * 1.文件
     * 2.数据
     *
     * @param file
     */
    private void writeNote(File file, String data) {
        try {
//            字节流--输出流   从内存里面写入到硬盘里面
            OutputStream outputStream = new FileOutputStream(file);
//            将字节转换为字符--乱码,
//            如果我们的代码里面出现字符，而且不轻易改变，常量，应该将所有的常量写在一起，好维护
            outputStream.write(data.getBytes(StandardCharsets.UTF_8));
//            int
//            char
//            outputStream.
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 创建文件
     *
     * @param file
     * @param fileName
     * @return
     */
    private File createFile(File file, String fileName) {
        File file1 = new File(file, fileName);
        try {
            file1.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return file1;
    }

    /**
     * 创建文件夹
     *
     * @param path
     * @return
     */
    private File createDirectory(String path) {
        File file = new File(path);
//        E:\wanxi\step-3\canyin03-0705\myWeb\a\b\c\d
//        mkdirs 创建成功--如果父目录不存在，则依次创建目录
//        mkdir 创建失败--如果父目录不存在，则创建失败
        file.mkdirs();
//        if (mkdirs) {
//            return file;
//        }
//        return null;
        return file;//三元运算符
    }


}
